#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

using namespace std;

int main()
{   
    pid_t id = fork();
    if (id == 0)
    {
        // 子进程
       int *p = nullptr;
       *p = 1000; // 野指针问题
       
        exit(1);
    }

    // 父进程
    int status = 0;
    // nullptr, NULL, 0, '\0' == 0;
    waitpid(id, &status, 0); // nullptr

    // core dump表明当前进程在退出时，是否发生core dump
    printf("exitcode: %d, signo: %d, core dump flag: %d\n",
           (status >> 8) & 0xFF, status & 0x7F, (status >> 7) & 0x1);

    return 0;
}
